iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
Mobile Development

Android Studio 30天進階學習系列 第 27

Android Studio 30天進階學習-DAY27_SpringBoot_基礎註解標籤與常見的RESTful Web註解標籤說明與簡易Demo操作

  • 分享至 

  • xImage
  •  

今天要來說明SpringBoot的一些常用的註解標籤使用方式,主要會以目前最為常見的RESTful Web基礎註解標籤的用法進行說明與實際操作。

註解標籤說明

@SpringBootApplication

@SpringBootApplication 是一個重要的Spring Boot註解,它結合了多個註解,用於設置Spring Boot應用程式。

這個註解主要用於啟動Spring Boot應用程式,並設定自動配置、掃描套件以及設定Spring Boot特定的設置,一般在專案建立時就會幫我們自動建立好的

  • 程式碼撰寫
@SpringBootApplication
public class SpringBootItHomeApplication {
    // 主程式中的方法
    public static void main(String[] args) {
        SpringApplication.run(SpringBootItHomeApplication.class, args);
    }
}

@RestController

@RestController 是在 Spring 4.0 開始引入的註解標籤,它通常用於標記控制器類別,用於建立RESTful Web服務。這個註解標籤就相當於 @Controller@ResponseBody 的結合使用的方法。在使用這個註解標時,不需要再到方法上方使用 @ResponseBody 註解。

  • 程式碼撰寫
@SpringBootApplication
@RestController
public class SpringBootItHomeApplication {
    // 其他參數定義
    public static void main(String[] args) {
        SpringApplication.run(SpringBootItHomeApplication.class, args);
    }
    // 進行獲取的方法建立
    // 如RequestMapping、GetMapping等等的方法
}

@GetMapping

這個註解標籤的意思是獲取的意思,在Postman中是使用GET的參數進行資料的獲取,如這邊我是寫簡易的使用者資訊獲取方法。

通常在使用的時候會在後方加入 ("/指定請求的網址")來特定這個的用法是什麼功能的,其他的請求也是,如Get就會寫成是請求獲取資料等等的名稱作為標記,這邊我是做成請求使用者資料的功能。

  • 程式碼撰寫
@GetMapping("/get-user-info")
public String getUserInfo() {
    return "Name: " + name + ", Age: " + age;
}

@PutMapping

@PutMapping 這個註解標籤的用法為是Spring框架中的一個HTTP請求映射的註解,它用於將HTTP PUT請求映射到控制器方法,主要是用於更新現有資料的內容。

這邊的寫法如同GetMapping所述,我是將這個功能做成簡易的更新使用者資料。

  • 程式碼撰寫
@PutMapping("/update-user-info")
public String updateUserInfo(String name, String age) {
    if (this.name == null || this.age == null ) {
        return "Update user info fail";
    } else if(name.isEmpty() || age.isEmpty()){
        return "Please input name and age";
    } else{
        this.name = name;
        this.age = age;
        return "Update "+"Name: " + name + ", Age: " + age+" success";
    }
}

@PostMapping

@PostMapping 用於處理HTTP POST請求,這種請求通常用於創建新資源或提交資料給伺服器。當客戶端發送POST請求時,它通常包含要創建或修改的資料。

這邊我是建立創建使用者資料的功能。

@PostMapping("/add-user-info")
public String userInfo(String name, String age) {
    this.name = name;
    this.age = age;
    return "Add "+"Name: " + name + ", Age: " + age+" success";
}

@DeleteMapping

@DeleteMapping 顧名思義就是HTTP Delete的刪除請求,一般會連動資料庫進行資料筆數的刪除等等的操作。

  • 程式碼撰寫
@DeleteMapping("/delete-user-info")
public String deleteUserInfo() {
    this.name = null;
    this.age = null;
    return "Delete user info success";
}

@RequestMapping

@RequestMapping 是Spring框架中的一個關鍵註解,用於映射HTTP請求到控制器方法。它可以應用於控制器類別級別或方法級別,並指定處理特定URL路徑和HTTP方法的功能。

  • 程式碼撰寫
@RequestMapping("/get-user-controller")
public UserController getUserController() {
    return userController;
}

或是在外部建立Class的時候在上方建立 @RequestMapping 的動作

@RequestMapping("/user-controller")
class UserController {
    // 使用者資料的增刪查改等動作
}

@Controller

@ControllerSpring框架中的一個註解,用於標記類別為控制器(Controller),用於處理HTTP請求,並返回相應的視圖或數據給客戶端。

控制器類別通常包含多個方法,每個方法處理不同的HTTP請求。這些方法可以使用不同的註解(如 @GetMapping、@PostMapping、@RequestMapping 等)來定義處理的URL路徑和HTTP方法。

這邊我的作法是建立一個新的Class來放置User資料的操作

  • 程式碼撰寫
@Controller
@RequestMapping("/user-controller")
class UserController {
    // 其他User的http請求方法
}

@ResponseBody

@ResponseBodySpring框架中的一個註解標籤,通常與 @Controller 一起使用,用於指示控制器方法返回的內容應該作為HTTP回應的主體部分(body)傳送給客戶端

當一個方法標記為 @ResponseBody 時,Spring將自動序列化方法返回的對象(通常是Java物件)為JSONXML或其他支持的格式,然後將該序列化的內容作為HTTP回應的主體返回給客戶端。

這邊就是將外部定義成Controller的UserController類別中的請求參數加上ResponseBody註解標籤

  • 程式碼撰寫
@Controller
@RequestMapping("/user-controller")
class UserController {
    private String name;
    private String age;

    @ResponseBody
    @GetMapping("/get-user-info")
    public String getUserInfo() {
        return "Name: " + name + ", Age: " + age;
    }
    // 其他如POST、PUT、DELETE等參數皆會加上@ResponseBody註解標籤
}

為了能夠在主程式中連結到UserController的類別進行請求操作,這邊我再加上了 @Autowired 的註解標籤來連結這個類別

@Autowired

@AutowiredSpring框架中的一個註解,用於實現自動依賴注入(Dependency Injection)。它可以標記在類別的屬性建構子、或方法上,以讓Spring容器自動將相依性(例如其他Bean或組件)注入到被標記的元素中。

  • 程式碼撰寫
@SpringBootApplication
@RestController
public class SpringBootItHomeApplication {
    // 注入UserController
    @Autowired
    private UserController userController;

    public static void main(String[] args) {
        SpringApplication.run(SpringBootItHomeApplication.class, args);
    }
    
    // 獲取UserController的所有資訊
    @RequestMapping("/get-user-controller")
    public UserController getUserController() {
        return userController;
    }
}

PostMan操作截圖

  1. 新增User
    https://ithelp.ithome.com.tw/upload/images/20231007/201503705zpwfBDx4Y.png
  2. 查詢User資料
    https://ithelp.ithome.com.tw/upload/images/20231007/20150370luPwp5DVrg.png
  3. 刪除資料並查詢結果
    • 刪除結果
      https://ithelp.ithome.com.tw/upload/images/20231007/20150370uazNP0WA5W.png
    • 再次查詢
      https://ithelp.ithome.com.tw/upload/images/20231007/20150370LixFr5PsnP.png
  4. 修改資料
    • 當我們原本的資料中沒有任何資料時或是沒有輸入任何資料時則會返回以下結果
      https://ithelp.ithome.com.tw/upload/images/20231007/20150370hsocdRGmDj.png
    • 成功修改
      https://ithelp.ithome.com.tw/upload/images/20231007/20150370VIpZ2dcvwC.png
    • 再次查詢
      https://ithelp.ithome.com.tw/upload/images/20231007/20150370lK7nqL8y0N.png

可以看到前面加了/user-controller的網址,代表著 UserController 類別的開頭的RequsetMapping的網址。
若將這些請求全部寫在主程式中不加任何前置的網址則可以省略掉前面的前置網址,但這樣就如同將所有的檔案都丟在主資料夾層不進行子資料夾層的分類的動作一樣,會十分雜亂難以維護。

以上是我今天對於SpringBoot進行Http請求操作的基本註解標籤的說明與簡易Demo建立


上一篇
Android Studio 30天進階學習-DAY26_SpringBoot_IntelliJ Ultimate Edition學生方案申請流程&建立SpringBoot簡易Project
下一篇
Android Studio 30天進階學習-DAY28_SpringBoot_將資料以Json格式進行讀寫的方式(ResponseEntity使用與說明)
系列文
Android Studio 30天進階學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言